Ref와 useRef

✒️ 2025-05-28 10:44 내용 수정


Ref

DOM 노드나 React element를 참조할 수 있는 방법을 제공함

ref.png

ref state
useRef(initialValue){current:initialValue} 획득 useState(initialValue)[value, setValue] 반환
값이 변경될 때 re-render가 발생하지 않음 값이 바뀌면 re-render가 발생함
Mutable(변이 가능) - 렌더링 과정 외에 current를 변경가능 Immutable - setValue()로만 변경하여 re-render를 촉발시킴
렌더링 중에 current 값을 읽거나 쓰면 안됨 언제든 state를 읽을 수는 있지만, 각 render는 변하지 않는 state의 snapshot을 가짐

useRef(Ref Hook)

렌더링에 필요하지 않은 값을 참조할 수 있는 Hook

import { useRef } from 'react';

function Test() {
	const ref = useRef(initialValue); // 초기값, 초기 렌더링 이후엔 무시됨
}
import { useRef } from 'react';

function Test() {
	{/* 렌더링 중에 ref를 작성하면 안된다 */}
	ref.current = 'a';
	{/* 렌더링 중에는 ref을 읽으면 안된다 */}
	return <span>{ref.current}</span> 
}

//////////////////////////////////////////
// 렌더링 중에 ref를 읽거나 써야 하는 경우 이벤트 핸들러나 Effect에서 수행한다.

function NewTest() {

	// Effect로 ref를 읽거나 쓰기
	useEffect(()=>{
		ref.current = 'a';
	})

	// 이벤트 핸들러에서 ref를 읽거나 쓰기
	function handleClick() {
		clickAction(ref.current);
	}
}